﻿using System;
using System.Linq;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace Smart
{
    public partial class frmEtiket : Form
    {
        public frmEtiket()
        {
            InitializeComponent();
        }

        private void StokBilgi(string barkod)
        {
            using (Query q = new Query(ProgramTipleri.Mikro))
            {
                StringBuilder sb = new StringBuilder();
                sb.Append("SELECT     STOKLAR.sto_isim, STOKLAR.sto_kod, dbo.fn_DepodakiMiktar(STOKLAR.sto_kod, @depo, '') AS depodaki_miktar, dbo.fn_EldekiMiktar(STOKLAR.sto_kod) AS eldekimiktar,dbo.fn_StokSatisFiyati(STOKLAR.sto_kod, 1, 99) AS fiyat, dbo.fn_DovizSembolu(dbo.fn_StokFiyatDovizCinsi(STOKLAR.sto_kod, 1, 99)) AS fiyatDovizCinsi,dbo.fn_StokSatisFiyati(STOKLAR.sto_kod, 1, 99) * dbo.fn_KurBul(@tarih, dbo.fn_StokFiyatDovizCinsi(STOKLAR.sto_kod, 1, 99), 1) AS dovizFiyati ");
                sb.Append(",dbo.fn_StokSatisFiyati(STOKLAR.sto_kod, 2, 99) AS fiyat2, dbo.fn_DovizSembolu(dbo.fn_StokFiyatDovizCinsi(STOKLAR.sto_kod, 2, 99)) AS fiyat2DovizCinsi ");
                sb.Append(",dbo.fn_StokSatisFiyati(STOKLAR.sto_kod, 3, 99) AS fiyat3, dbo.fn_DovizSembolu(dbo.fn_StokFiyatDovizCinsi(STOKLAR.sto_kod, 3, 99)) AS fiyat2DovizCinsi ");
                sb.Append(" FROM       STOKLAR INNER JOIN BARKOD_TANIMLARI ON STOKLAR.sto_kod = BARKOD_TANIMLARI.bar_stokkodu ");
                sb.Append(" WHERE     (BARKOD_TANIMLARI.bar_kodu = @kod) ");
                q.Add(sb.ToString());

                q.Add("@kod", SqlDbType.VarChar, barkod, 25);
                q.Add("@tarih", SqlDbType.DateTime, DateTime.Now);
                q.Add("@depo", SqlDbType.Int, Program.Session.VarsayilanDepo());

                var sonuc = q.ToList(new { isim = "", kod = "", depoMiktari = 0d, eldekiMiktar = 0d, fiyat = 0d, dovizSembol = "", tlFiyat = 0d, fiyat2 = 0d, dovizSembol2 = "", fiyat3 = 0d, dovizSembol3 = "" }).FirstOrDefault();
                if (sonuc != null)
                {
                    DataTable dt = new DataTable();
                    dt.Columns.Add("Bilgi", typeof(string));
                    dt.Columns.Add("Değer", typeof(string));
                    dt.Rows.Add("Stok Adı", sonuc.isim);
                    dt.Rows.Add("Stok Kodu", sonuc.kod);
                    dt.Rows.Add("Depo Miktarı", sonuc.depoMiktari);
                    dt.Rows.Add("Toplam Miktar", sonuc.eldekiMiktar);
                    dt.Rows.Add("Fiyat", sonuc.fiyat);
                    dt.Rows.Add("Döviz Sembolü", sonuc.dovizSembol);
                    dt.Rows.Add("TL Fiyat", sonuc.tlFiyat);
                    dt.Rows.Add("2.Fiyat", sonuc.fiyat2);
                    dt.Rows.Add("Döviz Sembolü", sonuc.dovizSembol2);
                    dt.Rows.Add("3.Fiyat", sonuc.fiyat3);
                    dt.Rows.Add("Döviz Sembolü", sonuc.dovizSembol3);

                    gridView1.VeriKaynagi = dt;
                    gridView1.AutoSizeCol();
                    txtBarkod.Text = barkod;
                    txtMiktar.Focus();
                }
                else
                {
                    MessageBox.Show("Ürün Bulunamadı !");
                    ClearScreen();
                }
            }
        }
        private void StokListele(string filtre, bool stokKodaGore)
        {
            using (Query q = new Query(ProgramTipleri.Mikro))
            {
                q.Add(BackOffice.Get.StokListSql(filtre, stokKodaGore));
                var list = q.ToList(new { barkod = "", Kodu = "", Adi = "" });
                gridView2.SuspendLayout();
                gridView2.DataSource = list;
                gridView2.SetColumnStyles(list, new[] 
                                            { 
                                                new ColumnStyle("Stok Adı","Adi", 250),
                                                new ColumnStyle("Stok Kodu","Kodu", 150),
                                                new ColumnStyle("Barkod","barkod", 150)
                                            });
                gridView2.ResumeLayout();
                tabControl1.SelectedIndex = 1;
                gridView2.AutoSizeCol();
            }
        }

        private void btnKodu_Click(object sender, EventArgs e)
        {
            StokListele(txtBarkod.Text, true);
        }
        private void gridView2_DoubleClick(object sender, EventArgs e)
        {
            if (gridView2.CurrentRowIndex > -1)
            {
                string barkod = gridView2[gridView2.CurrentRowIndex, 2].ToString();
                tabControl1.SelectedIndex = 0;
                StokBilgi(barkod);
            }
        }

        private void txtBarkod_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                StokBilgi(txtBarkod.Text);
            }
        }

        private void btnAdi_Click(object sender, EventArgs e)
        {
            StokListele(txtStokAdi.Text, false);
        }

        private void frmEtiket_Activated(object sender, EventArgs e)
        {
            txtBarkod.Focus();
        }

        private void btnKapat_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void DosyayaYaz()
        {
            string filename = "";
            if (Directory.Exists(Environment.GetFolderPath(Environment.SpecialFolder.Personal)))
                filename = Environment.GetFolderPath(Environment.SpecialFolder.Personal) + "\\etiket.txt";
            else
                filename = Methods.StartupPath() + "\\etiket.txt";

            using (StreamWriter sw = new StreamWriter(filename, true))
            {
                sw.WriteLine("{0};{1}", txtBarkod.Text, txtMiktar.Text);
                sw.Close();
            }
            ClearScreen();
        }

        private void ClearScreen()
        {
            txtMiktar.Text = "1";
            txtBarkod.Text = "";
            txtStokAdi.Text = "";
            gridView1.DataSource = null;
            txtBarkod.Focus();
        }

        private void txtMiktar_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                if (!string.IsNullOrEmpty(txtMiktar.Text))
                {
                    DosyayaYaz();
                }
                else
                {
                    MessageBox.Show("Lütfen etiket miktarını girin");
                }
            }
        }

        private void btnEkle_Click(object sender, EventArgs e)
        {
            if (!string.IsNullOrEmpty(txtMiktar.Text))
            {
                DosyayaYaz();
            }
            else
            {
                MessageBox.Show("Lütfen etiket miktarını girin");
            }
        }

        bool sipShow = false;
        private void button1_Click(object sender, EventArgs e)
        {
            if (!sipShow)
            {
                sipShow = true;
                Sip.Show();
            }
            else
            {
                sipShow = false;
                Sip.Hide();
            }
        }


    }
}